<?php 
/** create by fu */
namespace app\api\controller\v1;

use app\api\validate\AddressNew;
use app\api\service\Token as TokenService;
use app\api\model\User as UesrModel;

use app\lib\exception\UserException;
use app\lib\exception\SuccessMessage;
use app\lib\exception\ForbiddenException;
use app\lib\exception\TokenException;
use app\lib\enum\ScopeEnum;
use app\api\controller\BaseController;

/**
 * 
 */
class Address extends BaseController
{

	protected $beforeActionList = [
 		'checkPrimaryScope' => ['only'=>'createOrUpdateAddress'],
	];

	public function createOrUpdateAddress()
	{
		$validate = new AddressNew();
		$validate->goCheck();
 
		// 根据Token获取uid 
		// 根据查找用户数据 判断用户是否存在  不存在抛出异常
		// 获取用户从客户端提交来的地址信息
		// 每个用户只能有一个地址 已存在则更新 否则添加
		$uid = TokenService::getCurrentUid();

		$user = UesrModel::get($uid);
		if(!$user) throw new UserException();

 		//获得仅需要的参数
		$dataArray = $validate->getDataByRule(input('post.'));
		
		//通过User模型的关联 获得address的模型 的地址
		$userAddress = $user->address;

        //没有地址保存  有则更新
		if(!$userAddress){
			$user->address()->save($dataArray);//通过User对address模型的关联 来获得address模型 再创建一条数据
		}else{
			$user->address->save($dataArray);  //直接获取模型地址 更新
		}
		// throw new SuccessMessage();
		return json(new SuccessMessage(),201);
	}
}




 ?>